package com.specter.sure.core;

/**
 * Note:用户认证授权提供机
 * 
 * @author Liang.Wang
 * @version Apr 20, 2011 12:07:45 AM
 */
public interface AuthorizedProvider {

	/**
	 * 是否为不登录访问资源
	 * 
	 * @param path 访问路径
	 * @return 如果非控制资源则true否则false
	 */
	public boolean isNoControlResource(String path);

	/**
	 * 验证是否有登录
	 * 
	 * @return
	 */
	public boolean validate() throws Exception;

	/**
	 * 对用户对象json进行储存，设置系统登录状态
	 * 
	 * @param subject 用户对象
	 * @return 对应的JWT的TOKEN
	 * @throws AuthException
	 */
	public String login(Authorized subject) throws AuthException;

	/**
	 * 对用户对象json进行销毁，设置系统登录状态
	 * 
	 * @return
	 * @throws AuthException
	 */
	public String logix(Authorized subject) throws AuthException;

	/**
	 * 获得用户加密后的密码
	 * 
	 * @return
	 */
	public String encode(String loginId, String password);

}
